//模块化对于user表的请求

//链接user表的数据库
const userModel=require('../db/user')
//引入加密模板
const bcryptjs=require('bcryptjs')
module.exports={
    //注册请求
    register:(req,res)=>{
        //接受post数据--在app中创建过中间件，可以直接使用req.body
        let {username,password,email,tel}=req.body
        console.log(username,password)//为空时，值为undefined
        //验证注册内容是否为空--用户名密码必填
        if(!username||!password){//undefined转bool为false
            res.json({
                error_code:3,
                msg:'用户名或密码为空'
            })
            return
        }
        //查询是否有这个用户名
        userModel.findOne({username},(err,docs)=>{
            if(err){//查询出错
                throw new Error(err)
            }
            //查询成功；判断是否有查到数据
            if(docs){//用户名被占用
                //响应一个json形式的内容
                res.json({
                    error_code:1,
                    msg:'用户名被占用'
                })
                return
            }
            //查询成功没有被占用
            userModel.insertMany({
                username,
                password:bcryptjs.hashSync(password,10),
                email,
                tel
            },(err,docs)=>{
                if(err){
                    throw new Error(err)
                }
                //响应注册成功
                res.json({
                    error_code:0,
                    msg:'注册成功！'
                })
            })
        })
        // res.send('注册')
    },
    //登录请求
    login:(req,res)=>{
        //获取数据
        let {username,password}=req.body
        //判断数据是否为空
        if(!username || !password) {
            res.json({
                error_code: 1,
                msg: '用户名和密码不能为空！'
            })
            return
        }
        //在数据库中查询当前用户名是否存在
        userModel.findOne({username}, (err, docs) => {
            if(err) {//查询出错
                throw new Error(err)
            }
            if(!docs) {//查询到，判断是否有数据
                res.json({
                    error_code: 2,
                    msg: '用户名或密码错误！'
                })
                return
            }
            //比较提交的用户名密码和数据库中是否一致
            let bool = bcryptjs.compareSync(password, docs.password)
            console.log(bool, password);
            })
            if(!bool){//密码不正确
                res.json({
                    error_code: 2,
                    msg: '用户名或密码错误！'
                })
                return
            }
            res.json({
                error_code: 0,
                msg: '登录成功！',//登录成功后设置用户令牌
                data: {
                    token,
                    userid: docs._id,
                    username
                }
            })
        res.send('登录')
    }

    //////////令牌

}